草庐IT

C++ ifstream 到 char *

全部标签

go - 如何通过 golang 中的 CGO 将 Go 字符串复制到 C char *?

我想通过CGO将一个Go字符串复制到一个char*中。我可以这样做吗?funccopy_string(cstr*C.char){str:="foo"C.GoString(cstr)=str} 最佳答案 根据cgodocumentation您需要使用C.CString函数将Go字符串转换为C字符串:cstr=C.CString(str)请注意,C.CString函数会为您分配内存,但不会释放它,因此您有责任通过以下调用释放内存:C.free(unsafe.Pointer(cstr)) 关于

go - 将 Go []byte 转换为 C *char

我有一个byte.Buffer,我使用binary.Write()函数将数据打包。然后我需要将这个字节数组发送到C函数。使用Go1.6我没有成功地解决这个问题。buf:=new(bytes.Buffer)//createmybuffer....binary.Write(buf,binary.LittleEndian,data)//writemydatatobufferhereaddr:=(*C.uchar)(unsafe.Pointer(&buf.Bytes()[0]))//convertbuffersbytearraytoaCarrayrc:=C.the_function(addr,

c - atoi 从定义的索引将字符串转换为 char

假设我有charx[3]="123";并且我只想转换char数组的索引1和索引2"23",我可以通过atoi来完成吗?我知道我可以通过charz[2];z[0]=x[1];z[1]=x[2];atoi(z);但这不是我要的。 最佳答案 你可以这样做charx[4];inti;strcpy(x,"123");i=atoi(x+1);因为x是指向char的指针,所以x+1是指向下一个char的指针。如果您尝试使用打印printf("%s",x+1);您将得到23作为输出。请注意,尽管您需要将char数组的长度声明为比其中的字符数多1-以

c - extern char **environ 和 extern char *environ[] 有什么区别

#include#include#includeexternchar*environ[];intmain(intargc,char*argv[]){intindex=0;char**env=environ;printf("Environmentvariables:\n");index=0;while(env[index]){printf("envp[%d]:%s\n",index,env[index]);++index;}return0;}输出:Environmentvariables:envp[0]:GH#þ我想打印所有的环境,但是不行。我将externchar*environ[]更

linux - 如何通过计算 AWK 或 bash 中 char 的出现次数来过滤行?

输入是这样的:CNNCCNCNCNNNNCCCCNNNCCCCN输出应该是这样的:CNNCCCCCCN这意味着,如果N的出现次数超过3次,则该行将被过滤掉,否则将被保留。(在我的工作中,我需要过滤掉超过500N的100000行,因此性能可能很重要)我知道如何在awk中按连续的N过滤,但我不知道如何计算不连续的..有人对此有想法吗?shell中的解决方案也可以。在所有答案中,我认为这个可能是最简单的:awk-FN'NF 最佳答案 awk-FN-vcount=3'NF或者,对于不支持-v选项的旧版awk,awk-FN'NF该命令使用目标

linux - x86_64 程序集 execve *char[] 系统调用

我试图在不使用标准库的情况下使用一些Linux64位x86程序集,但是我在处理提供给我的程序的参数(argv)时遇到了一些问题。我认为(根据文档)rsp标记argcqword的开始,而[rsp+8]将是argv。不幸的是,情况并非如此,以下(删节)程序会导致EFAULT(错误地址)。sys_execveequ59sys_exitequ60section.datachilddb"/bin/sh",0global_startsection.text_start:movrdi,child;#1filenamemovrsi,[rsp+8];#2argvmovrdx,0;#3envp=0movr

VC++ 2019 “const char*“类型的实参与“LPCTSTR“类型的形参不兼容,的解决办法

一、问题描述项目使用Unicode编码,当使用tinyxml2读取xml内容时,利用root->Name()获取的是constchar*类型的字符串,直接传递给Edit->SetWindowTextW(),报以下错误严重性代码说明项目文件行禁止显示状态错误(活动)E0167“constchar*”类型的实参与“LPCTSTR”类型的形参不兼容MFCTinyxml2C:\WebSite\MFCTinyxml2\MFCTinyxml2Dlg.cpp106导致无法正常编译严重性代码说明项目文件行禁止显示状态错误C2664“voidCWnd::SetWindowTextW(LPCTSTR)”:无法将参

VC++ 2019 “const char*“类型的实参与“LPCTSTR“类型的形参不兼容,的解决办法

一、问题描述项目使用Unicode编码,当使用tinyxml2读取xml内容时,利用root->Name()获取的是constchar*类型的字符串,直接传递给Edit->SetWindowTextW(),报以下错误严重性代码说明项目文件行禁止显示状态错误(活动)E0167“constchar*”类型的实参与“LPCTSTR”类型的形参不兼容MFCTinyxml2C:\WebSite\MFCTinyxml2\MFCTinyxml2Dlg.cpp106导致无法正常编译严重性代码说明项目文件行禁止显示状态错误C2664“voidCWnd::SetWindowTextW(LPCTSTR)”:无法将参

c++ - 有没有一种优雅的方法来确定 ifstream 是否附加到标准输入?

我的程序是一个普通的shell,我试图用C++编写。除了从命令行获取命令外,它还必须能够读取文件中的命令-文件名作为可选参数传递,而不是通过重定向传递。如果arg存在,我打开传递的文件名,否则我打开“/dev/stdin”。我对打开开发文件并不感到兴奋,这不是我的主要问题,但如果有人有更好的方法,我很乐意听到。最终我必须读取提供给shell的命令,但如果我从标准输入读取它,我必须先给出提示,或者如果输入来自文件,则跳过提示。我的问题是:是否有更好的方法来确定getCommand中输入流是否为stdin,而不是声明一个全局变量或传递一个bool或类似hack?我突然想到,如果我能以某种方

c++ - 在 C++ 中,当我对 -128,127 范围之外的整数值使用 static_cast<char> 时会发生什么?

在使用g++在i386Linux上编译的代码中,我使用了static_cast()对于char,强制转换的值可能超过-128,127的有效范围.没有错误或异常,所以我在生产中使用了代码。现在的问题是,当抛出超出此范围的值时,我不知道这段代码会如何表现。如果数据被修改或截断都没有问题,我只需要知道这种修改在这个特定平台上的表现如何。另外,如果使用C风格转换((char)value)会发生什么?它的行为会有所不同吗? 最佳答案 在您的情况下,这将是一个显式类型转换。或者更准确地说是积分转换。标准是这样说的(4.7):Ifthedesti